static ssize_t rio_read(rio_t *rp,char *usrbuf,size_t n)
{
int cnt;
while(rp->rio_cnt <=0)
{
rp->rio_cnt = read(rp->rio_fd,rp->rio_buf，sizeof(rp->rio_buf));
if (rp->rio_cnt<0)
{
if(errno !=EINTR)
{
return -1;
}
else if(rp ->rio_cnt == 0)
return 0;
else
rp ->rio_bufptr = rp->rio_buf;
}

/*Copy min(n,rp->rio_cnt)bytes from internal buf to user buf*/
cnt = n;
if(rp->rio_cnt<n)
cnt = rp->rio_cnt;
memcpy(usrbuf,rp->rio_bufptr,cnt);
rp->rio_bufptr +=cnt;
rp->rio_cnt -=cnt;
return cnt;
}
